using System.Collections.Generic;
using HCI.Questionaire.Entities;
using HCI.Questionaire.Exceptions;
using HCI.Questionaire.EventArgument;

namespace HCI.Questionaire.QuestionGroup
{
    public class QuestionGroup1 : ConsequenceQuestionGroup
    {

        #region QuestionGroupBase Members
        protected override List<Question> CreateQuestionInGroup()
        {
            //var questionList = new List<Question>();

            var q1 = new OneAnswerQuestion { QuestionText = "ท่านใช้อินเตอร์เน็ตความเร็วสูงมานานเท่าไร", AnswerCollection = new List<Answer>() };
            q1.AddAnswer(new Answer { AnswerText = "ไม่เกิน 1 ปี" });
            q1.AddAnswer(new Answer { AnswerText = "ไม่เกิน 2 ปี" });
            q1.AddAnswer(new Answer { AnswerText = "3 ปี" });
            q1.AddAnswer(new Answer { AnswerText = "4 ปี" });
            q1.AddAnswer(new Answer { AnswerText = "มากกว่า 5 ปี" });

            var q2 = new OneAnswerQuestion { QuestionText = "ท่านใช้อินเตอร์เน็ตในกิจกรรมใดเป็นอันดับแรกสุด", AnswerCollection = new List<Answer>() };
            q2.AddAnswer(new Answer { AnswerText = "เพื่อธุรกิจ / เพื่อการเล่นหุ้น" });
            q2.AddAnswer(new Answer { AnswerText = "เพื่อความเพลิดเพลิน" });
            q2.AddAnswer(new Answer { AnswerText = "เกมส์ ONLINE" });
            q2.AddAnswer(new Answer { AnswerText = "เพื่อค้นคว้าข้อมูลเพิ่มเติม / เพื่อการศึกษา / เพื่อติดตามข่าวสาร" });
            q2.AddAnswer(new Answer { AnswerText = "เพื่อติดต่อสื่อสาร / EMAIL / CHAT" });
            q2.AddAnswer(new TextAnswer { AnswerText = "อื่นๆ (โปรดระบุ)............." });

            var q3 = new OneAnswerQuestion { QuestionText = "ปัจจุบันท่านใช้บริการอินเตอร์เน็ตความเร็วสูงจากผู้ให้บริการใด", AnswerCollection = new List<Answer>() };
            q3.AddAnswer(new Answer { AnswerText = "TRUE" });
            q3.AddAnswer(new Answer { AnswerText = "CS LOXINFO" });
            q3.AddAnswer(new Answer { AnswerText = "INTERNET THAILAND" });
            q3.AddAnswer(new Answer { AnswerText = "PACIFIC INTERNET" });
            q3.AddAnswer(new Answer { AnswerText = "CAT" });
            q3.AddAnswer(new Answer { AnswerText = "JI-NET" });
            q3.AddAnswer(new Answer { AnswerText = "ISSP" });
            q3.AddAnswer(new Answer { AnswerText = "SAMART" });
            q3.AddAnswer(new Answer { AnswerText = "KSC" });
            q3.AddAnswer(new Answer { AnswerText = "A-NET" });

            var q4 = new OneAnswerConsequenceQuestion { ParentQuestion = null, QuestionText = "ท่านพอใจกับบริการที่ได้รับหรือไม่", AnswerCollection = new List<Answer>() };
            q4.AddAnswer(new ConsequenceAnswer { AnswerText = "พอใจ" });
            q4.AddAnswer(new ConsequenceAnswer { AnswerText = "ไม่พอใจ", NextQuestionIndex = 5 });
            q4.AddAnswer(new ConsequenceAnswer { AnswerText = "เฉยๆ", NextQuestionIndex = 999 });

            var q5 = new MultipleAnswerConsequenceQuestion { DefaultNextIndex =6, ParentQuestion = q4, QuestionText = "อะไรที่ทำให้ท่านพอใจในการใช้บริการอินเตอร์เน็ตความเร็วสูง (ตอบได้มากกว่า  1 คำตอบ)", AnswerCollection = new List<Answer>() };
            q5.ParentRelateValidate += () => { return q4.AnswerCollection[0].IsAnswered; };
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "คุณภาพสินค้าและบริการ", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "ให้บริการ", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "ของสมนาคุณ เช่น FREE โมเด็ม,FREE ค่าติดตั้ง", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "บริการเสริม เช่น SPAM FILTER, VIRUS SCAN", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "ความสะดวกในการชำระเงิน", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceAnswer { AnswerText = "บริการหลังการขาย ทางด้านเทคนิค", NextQuestionIndex = 6 });
            q5.AddAnswer(new ConsequenceTextAnswer { AnswerText = "อื่นๆ (โปรดระบุ).............", NextQuestionIndex = 6 });

            var q6 = new MultipleAnswerConsequenceQuestion { DefaultNextIndex = 6, ParentQuestion = q4, QuestionText = "อะไรที่ทำให้ท่านไม่พอใจในการใช้บริการอินเตอร์เน็ตความเร็วสูง (ตอบได้มากกว่า 1 คำตอบ)", AnswerCollection = new List<Answer>() };
            q6.ParentRelateValidate += () => { return q4.AnswerCollection[1].IsAnswered; };
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "คุณภาพสินค้าและบริการ", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "ให้บริการ", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "ของสมนาคุณ เช่น FREE โมเด็ม,FREE ค่าติดตั้ง", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "บริการเสริม เช่น SPAM FILTER, VIRUS SCAN", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "ความสะดวกในการชำระเงิน", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceAnswer { AnswerText = "บริการหลังการขาย ทางด้านเทคนิค", NextQuestionIndex = 6 });
            q6.AddAnswer(new ConsequenceTextAnswer { AnswerText = "อื่นๆ (โปรดระบุ).............", NextQuestionIndex = 6 });

            var q7 = new MultipleAnswerConsequenceQuestion { ParentQuestion = q4, QuestionText = "เหตุผลที่ทำให้ท่านสมัคร อินเตอร์เน็ตความเร็วสูงเนื่องจาก (ตอบได้มากกว่า 1 คำตอบ)", AnswerCollection = new List<Answer>() };
            q7.ParentRelateValidate += () => { return q4.AnswerCollection[1].IsAnswered || q4.AnswerCollection[0].IsAnswered; };
            q7.AddAnswer(new Answer { AnswerText = "เพื่อธุรกิจ / เพื่อการเล่นหุ้น" });
            q7.AddAnswer(new Answer { AnswerText = "เพื่อความเพลิดเพลิน" });
            q7.AddAnswer(new Answer { AnswerText = "เกมส์ ONLINE" });
            q7.AddAnswer(new Answer { AnswerText = "เพื่อค้นคว้าข้อมูลเพิ่มเติม / เพื่อการศึกษา / เพื่อติดตามข่าวสาร" });
            q7.AddAnswer(new Answer { AnswerText = "เพื่อติดต่อสื่อสาร / EMAIL / CHAT" });
            q7.AddAnswer(new TextAnswer { AnswerText = "อื่นๆ (โปรดระบุ)............." });

            this.AddQuestion(q1);
            this.AddQuestion(q2);
            this.AddQuestion(q3);
            this.AddQuestion(q4);
            this.AddQuestion(q5);
            this.AddQuestion(q6);
            this.AddQuestion(q7);

            return this._QuestionList;
        }

        public override string Description
        {
            get
            {
                return "พฤติกรรมการตัดสินใจเลือกซื้อบริการอินเตอร์เน็ตความเร็วสูง ของกลุ่มผู้ใช้บริการตามบ้าน";
            }
        }

        public override string Instruction
        {
            get
            {
                return "กรุณาเลือกคำตอบที่ท่านคิดว่าตรงกับ ความคิดเห็นของท่าน หรือตรงกับความเป็นจริงมากที่สุด";
            }
        }

        public override string QuestionStateText
        {
            get
            {
                if (this.QuestionList == null)
                    return string.Format("1/{0}", 6);

                int realIndex = this.CurrentQuestionIndex >= 5 ? this.CurrentQuestionIndex  : this.CurrentQuestionIndex +1;
                return string.Format("{0}/{1}", realIndex, this.QuestionList.Count-1);
            }
        }
        #endregion
        public override int GroupIndex
        {
            get { return 0; }
        }
    }
}
